/*! 
 * Interface file for the contact generators.
 *
 * \author Devis Rossini
 * \date 19 March 2012
 */ 
#ifndef PHXCONTACTGENERATOR_H_INCLUDE_GUARD
#define PHXCONTACTGENERATOR_H_INCLUDE_GUARD

#include "PhxContacts.h"

namespace phx
{
	/*!
     * This is the basic polymorphic interface for contact generators
     * applying to rigid bodies.
     */
    class ContactGenerator
    {
    public:

        /*!
         * Fills the given contact structure with the generated
         * contact. The contact pointer should point to the first
         * available contact in a contact array, where limit is the
         * maximum number of contacts in the array that can be written
         * to. The method returns the number of contacts that have
         * been written.
         */
        virtual unsigned AddContact(Contact* contact, unsigned limit) const = 0;
    };
}

#endif // PHXCONTACTGENERATOR_H_INCLUDE_GUARD